import geopandas as gpd
import pandas as pd
import folium
import folium.plugins
# Importamos los datos dos concellos
filepath = 'Concellos/Concellos_IGN.shp'
concellos = gpd.read_file(filepath)
# Ruta casas concellos
url = 'https://abertos.xunta.gal/catalogo/administracion-publica/-/dataset/0301/casas-dos-concellos-galicia/101/acceso-aos-datos.kml'
# Cargamos los datos de las casas doc concellos desde o arquivo kml
import requests
import lxml
from bs4 import BeautifulSoup
response = requests.get(url)
soup = BeautifulSoup(response.content,'lxml')
casasconcello = soup.find_all('placemark')
# Importamos los datos de los csv de cada concello
CoruƱacsv = pd.read_csv('CentrosEducativos/CoruƱa.csv',sep=',')
Lugocsv = pd.read_csv('CentrosEducativos/Lugo.csv',sep=',')
Orensecsv = pd.read_csv('CentrosEducativos/Orense.csv',sep=',')
Pontevedracsv = pd.read_csv('CentrosEducativos/Pontevedra.csv',sep=',')
# Ollo aos nomes das columnas <- teƱen espazos
# Isto darĆanos problemas Ć” hora de referencialas
CoruƱacsv.columns
Index(['Código', 'Nome', 'Enderezo', 'Concello', 'Provincia', 'Cód. postal',
'TelƩfono', 'Tipo de centro', 'COORDENADA_X', 'COORDENADA_Y',
'TITULARIDADE', 'ENSINO_CONCERTADO', 'DEPENDENTE'],
dtype='object')
# Eliminamos espazos sobrantes ao inicio e final dos nomes
CoruƱacsv.columns = CoruƱacsv.columns.str.strip()
CoruƱacsv.columns
Lugocsv.columns = Lugocsv.columns.str.strip()
Lugocsv.columns
Orensecsv.columns = Orensecsv.columns.str.strip()
Orensecsv.columns
Pontevedracsv.columns = Pontevedracsv.columns.str.strip()
Pontevedracsv.columns
Index(['Código', 'Nome', 'Enderezo', 'Concello', 'Provincia', 'Cód. postal',
'TelƩfono', 'Tipo de centro', 'COORDENADA_X', 'COORDENADA_Y',
'TITULARIDADE', 'ENSINO_CONCERTADO', 'DEPENDENTE'],
dtype='object')
m = folium.Map(location=[43, -8.20],zoom_start=8, width=800, height=800)
# capa tiles
folium.TileLayer('Stamen Terrain').add_to(m)
folium.TileLayer('CartoDB Positron').add_to(m)
# capa comarcas
folium.GeoJson(concellos, name='Concellos').add_to(m)
# clĆŗster
CoruƱa_cluster = folium.plugins.MarkerCluster(name='Centros_Educativos_CoruƱa').add_to(m)
Lugo_cluster = folium.plugins.MarkerCluster(name='Centros_Educativos_Lugo').add_to(m)
Orense_cluster = folium.plugins.MarkerCluster(name='Centros_Educativos_Orense').add_to(m)
Pontevedra_cluster = folium.plugins.MarkerCluster(name='Centros_Educativos_Pontevedra').add_to(m)
casa_concello = folium.plugins.MarkerCluster(name='Casa Concello').add_to(m)
# capa CoruƱa
for index, CoruƱa in CoruƱacsv.iterrows():
try:
latitude = CoruƱa['COORDENADA_X']
lonxitude = CoruƱa['COORDENADA_Y']
nome = CoruƱa['Nome']
folium.Marker([latitude,lonxitude],popup=nome, icon=folium.Icon(color='lightgray', icon='graduation-cap', prefix='fa')).add_to(m).add_to(CoruƱa_cluster)
except:
pass
# capa Lugo
for index, Lugo in Lugocsv.iterrows():
try:
latitude = Lugo['COORDENADA_X']
lonxitude = Lugo['COORDENADA_Y']
nome = Lugo['Nome']
folium.Marker([latitude,lonxitude],popup=nome, icon=folium.Icon(color='lightgray', icon='graduation-cap', prefix='fa')).add_to(m).add_to(Lugo_cluster)
except:
pass
# capa Orense
for index, Orense in Orensecsv.iterrows():
try:
latitude = Orense['COORDENADA_X']
lonxitude = Orense['COORDENADA_Y']
nome = Orense['Nome']
folium.Marker([latitude,lonxitude],popup=nome, icon=folium.Icon(color='lightgray', icon='graduation-cap', prefix='fa')).add_to(m).add_to(Orense_cluster)
except:
pass
# capa Pontevedra
for index, Pontevedra in Pontevedracsv.iterrows():
try:
latitude = Pontevedra['COORDENADA_X']
lonxitude = Pontevedra['COORDENADA_Y']
nome = Pontevedra['Nome']
folium.Marker([latitude,lonxitude],popup=nome, icon=folium.Icon(color='lightgray', icon='graduation-cap', prefix='fa')).add_to(m).add_to(Pontevedra_cluster)
except:
pass
# capa Casas Concellos
for casaconcello in casasconcello:
try:
folium.Marker([casaconcello.find('coordinates').text.split(',')[1], casaconcello.find('coordinates').text.split(',')[0]],popup=casaconcello.find('name').text, icon=folium.Icon(color='blue', icon='university', prefix='fa')).add_to(casa_concello)
except:
pass
folium.LayerControl().add_to(m)
m